/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package semac.control;

import java.sql.*;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import semac.entidades.*;

/**
 *
 * @author Trinity
 */
public class CtrlAnioLectivosCursos {

ArrayList<AnioLectivoCurso> anioLectivosCursos = new ArrayList();
private Conexion connection;
private String query;
private ResultSet resultado;
private HttpServletRequest request;



public CtrlAnioLectivosCursos() throws IOException, ParserConfigurationException, SAXException{
        request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
        String urlFile =  request.getRealPath("/")+ "/WEB-INF/dataBase.xml";
        connection =  new Conexion(urlFile);
}

//con este método todos los alumnos pasan a estar no matriculados y desactivados si tienen mora
public void culminarAnioLectivo(Cuenta cuenta) throws ClassNotFoundException,SQLException, IOException, ParserConfigurationException, SAXException{
        CtrlAnioLectivos anioLectivo = new CtrlAnioLectivos();
        anioLectivo.culminarAnioLectivo(cuenta);
}

public AnioLectivoCurso getAnioLectivoCurso(Curso curso, int anio) throws ClassNotFoundException,SQLException{
        AnioLectivoCurso anioLectivoCurso;
        connection.startConnection();
        query = "select *" 
                + "from semac.aniolectivocurso"
                + "where codigo_aniolectivocurso = " +  anio;
        resultado = connection.execute(query);
        connection.closeConnection();
        int alumnosMaximo = resultado.getInt("alumnosMaximo");
        double costo = resultado.getDouble("costo");
        int codigoAnioLectivo = resultado.getInt("codigo_AnioLectivo");
        int codigoCurso = resultado.getInt("codigo_Curso");
        char seccion =resultado.getString("seccion").charAt(0) ;
        Date tempDate = resultado.getDate("fechacreacion");
        GregorianCalendar fechaCreacion = new GregorianCalendar(tempDate.getYear(), tempDate.getMonth(), tempDate.getDate());
        tempDate = resultado.getDate("fechamodificacion");
        GregorianCalendar fechaModificacion = new GregorianCalendar(tempDate.getYear(), tempDate.getMonth(), tempDate.getDate());
        int ultimoAcceso = resultado.getInt("codigo_cuenta");
        anioLectivoCurso = new AnioLectivoCurso(alumnosMaximo, costo, codigoAnioLectivo, codigoCurso, seccion,
                fechaCreacion, fechaModificacion, ultimoAcceso);
        return anioLectivoCurso;


}

public void insertAnioLectivoCurso(AnioLectivoCurso c)throws ClassNotFoundException,SQLException{
    connection.startConnection();
    query = "insert into semac.aniolectivocurso (alumnosMaximo, costo, codigo_Curso, codigo_AnioLectivo " +
            "seccion, fechacreacion, fechamodificacion, ultimoacceso"
            + "values(" + c.getAlumnosMaximo() + "," + c.getCosto() + "," + c.getCodigoCurso()
            + "," + c.getCodigoAnioLectivo() + "," + c.getSeccion() + "," + c.getFechaCreacion()
            + "," + c.getFechaModificacion()  + "," + c.getUltimoAcceso() + ")";
    try{
    connection.execute(query);
    }catch(Exception e){}
    connection.closeConnection();
}

//Obtiene los cursos que están disponibles en el AnioLectivo con estado “Activo”
public ArrayList<Curso> getCursosDisponibles(int anio)throws ClassNotFoundException,SQLException{
        ArrayList<Curso> cursos = new ArrayList();
        Curso curso;
        connection.startConnection();
        query = "select *"
                + "from semac.curso"
                + "where anioLectivo = " +  anio;
        resultado = connection.execute(query);
        while (resultado.next()){

            int codigoNivel = resultado.getInt("codigo_Nivel");
            int codigoJornada = resultado.getInt("codigo_Jornada");
            int codigoModalidad = resultado.getInt("codigo_Modalidad");
            Date tempDate = resultado.getDate("fechacreacion");
            GregorianCalendar fechaCreacion = new GregorianCalendar(tempDate.getYear(), tempDate.getMonth(), tempDate.getDate());
            tempDate = resultado.getDate("fechamodificacion");
            GregorianCalendar fechaModificacion = new GregorianCalendar(tempDate.getYear(), tempDate.getMonth(), tempDate.getDate());
            int ultimoAcceso = resultado.getInt("codigo_cuenta");
            curso = new Curso(codigoNivel, codigoJornada, codigoModalidad, fechaCreacion,
                    fechaModificacion, ultimoAcceso);
            cursos.add(curso);
        }
        connection.closeConnection();
        return cursos;

}

}
